<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

//Libreria unica de Registro

class Resgitro_library {
	
    /**
     * Class constructor
     */
    function __construct(){
        $this->CI =& get_instance();

        $this->CI->load->model('Registro_model');
        $this->evento = $this->CI->Registro_model->config_conference();
    }
    
    function enviar_registro($correo,  $codigo_refe, $data_general){
        //Procesar para una referencia
        $nombre_completo = $data_general['nombre_completo'];
        $mensaje_correo = $data_general['mensaje'];
        $precio_cero = $data_general['precio_cero'];
        $confe_selec = $data_general['confe_selec'];
        $img = isset($data_general['img'])? $data_general['img'] : FALSE;
        
        $message = "<div align=\"center\"><img src=\"cid:imagen\"> </div>";
        
        if($precio_cero){
            $this->CI->load->library('barcode');
            $ing_correo = $img; 
            if(!$img){
                $ing_correo = $this->CI->barcode->genera_imagen( $codigo_refe ); 
            }
            $message .= "<div align=\"center\">" . $codigo_refe . "</div>";
        }else{
            $ing_correo = $img; 
            if(!$img){
                $ing_correo = base64_encode( file_get_contents('img/logo_seminario.png') );
            }
        }
        
        $message .= "<div align=\"center\"><b>" . $nombre_completo . "</b></div>"
                ."<div align=\"center\"><b>" . $mensaje_correo . "</b></div>";
        
        if($this->evento->multi_conferencia === TRUE){
            $message .="<div align=\"center\"><b>Tus talleres seleccionados son:</b></div>";
            $conferencias_query = $this->CI->Registro_model->conferencias();
            foreach ($conferencias_query->result_array() as $value) {
                foreach ($confe_selec as $value_id) {
                    if ($value['id_conferencia'] === $value_id) {
                        $message .= '<p align="center">' . $value['nombre_confe'] . ' - ' . $value['hora_inicio'] . ' en ' . $value['nombre_salon'] . '</p>';
                    }
                }
            }
        }

        $message .=" \r\n";
        $message .="--Correo\r\n";
        $message .="Content-Type: image/gif; name=\"imagen.jpg\"\r\n"
                . "Content-Transfer-Encoding: base64\r\n"
                . "Content-disposition: attachment; file=\"imagen.jpg\"\r\n"
                . "Content-ID: <imagen>\r\n"
                . "\r\n"
                . chunk_split($ing_correo)
                . "--Correo--\r\n";

        return $this->evniar_correo($correo, $message);
    }
    
    function enviar_contactar($correo, $nombre_completo, $mensaje_correo){

        $message = "<div align=\"left\"><b>Saludos " . $nombre_completo . "</b></div>"
                ."<div align=\"left\">" . $mensaje_correo . "</div>";
       
        $message .=" \r\n";
        $message .="--Correo\r\n"
                 . "--Correo--\r\n";

        return $this->evniar_correo($correo, $message);
    }

    function enviar_masivos($participantes, $asunto){
        $this->CI->load->helper('email');
       
        $respuesta = array();
        $ing_correo = base64_encode( file_get_contents('img/correo_masivo.png') );
            foreach ($participantes as $participante) {
                $correo = strtolower(trim($participante));
                if (valid_email($participante)){
                    $message = "<div align=\"center\"><img src=\"cid:imagen\"> </div>";

                    $message .=" \r\n";
                    $message .="--Correo\r\n";
                    $message .="Content-Type: image/gif; name=\"imagen.jpg\"\r\n"
                            . "Content-Transfer-Encoding: base64\r\n"
                            . "Content-disposition: attachment; file=\"imagen.jpg\"\r\n"
                            . "Content-ID: <imagen>\r\n"
                            . "\r\n"
                            . chunk_split($ing_correo)
                            . "--Correo--\r\n";

                    $respuesta[] = $this->evniar_correo($correo, $message, $asunto);
                } else {
                    $respuesta[] = 'Correo :"'.$correo.'" invalido.';
                }
            }
        return $respuesta;
    }
    
    private function evniar_correo($correo, $contenido, $asunto = false) {
        $to = $correo;
        $subject = $asunto ? $asunto: 'Confirmación '.$this->evento->nombre_evento;
        $headers = "From: eventus@visoconstrucciones.com\r\n"
                ."MIME-Version: 1.0\r\n"
                . "Content-Type: multipart/mixed; boundary=\"Correo\"";
        $message = "Si puede ver esto es que tú cliente de correos no acepta los tipos MIME!\r\n"
                . "--Correo\r\n"
                . "Content-Type: text/html; charset=\"utf-8\"\r\n"
                . "Content-Transfer-Encoding: 7bit\r\n\r\n";

        $message .= $contenido;

        return mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $headers);
    }

    /**
     * this function y for detect rest metod
     * 
     */
    function detect_method() {
        $method = strtolower($this->CI->input->server('REQUEST_METHOD'));
        if ($this->CI->config->item('enable_emulate_request')) {
            if ($this->CI->input->post('_method')) {
                $method = strtolower($this->CI->input->post('_method'));
            } else if ($this->CI->input->server('HTTP_X_HTTP_METHOD_OVERRIDE')) {
                $method = strtolower($this->CI->input->server('HTTP_X_HTTP_METHOD_OVERRIDE'));
            }
        }
        if (in_array($method, array('get', 'delete', 'post', 'put'))) {
            return $method;
        }
        return 'get';
    }
    
    //--------------------------------------------------------------------------

    /**
     * Valida RFC
     */
    function valida_rfc($rfc) {
        $exp = '/^[a-zA-Z]{3,4}[ \-]?[0-9]{2}((0{1}[1-9]{1})|(1{1}[0-2]{1}))((0{1}[1-9]{1})|([1-2]{1}[0-9]{1})|(3{1}[0-1]{1}))[ \-]?[a-zA-Z0-9]{3}$/D';
        if (preg_match($exp, $rfc)){ 
            return TRUE;
        }
        $this->CI->form_validation->set_message('external_callbacks', 'RFC invalido');
        return FALSE;
    }
    
    //--------------------------------------------------------------------------    
    
    /**
     * Obteine valore sunicos de un array para procesarlos como titulos
     * 
     */
    function unicos($array, $etiqueta) {
        $titulos = array();
        foreach ($array as $key => $value) {
            $titulos[] = $value[$etiqueta];
        }
        return array_unique($titulos);
    }
    //--------------------------------------------------------------------------
    
    /**
     * de una serie de regsitro regresa un array asosiativi por determinado campo
     * 
     */
    function regsitros_a_array($results, $llave, $valor) {
        $array = array();
        foreach ($results as $row) {
            $array[$row->{$llave}] = $row->{$valor};
        }
        return $array;
    }
    //--------------------------------------------------------------------------

    
    /**
     * de una serie de regsitro regresa un array asosiativi por determinado campo
     * 
     */
    function regsitros_a_arraymulti($results, $llave, $llave2, $valor) {
        $array = array();
        foreach ($results as $row) {
            //array por empleado
            $ref = &$array[$row->{$llave}];
            if(isset($ref[$row->{$llave2}] )){
                $ref = array();
            }
            $ref[$row->{$llave2}] = $row->{$valor};
        }
        return $array;
    }
    //--------------------------------------------------------------------------
       

    /**
     * Algoritmo del Codigo de Barras
     */
    function algoritmo_cupones($id = 0, $la = 6) {
        $var = strtoupper (substr( base_convert(microtime(TRUE)+$id, 10, 36),-$la));
        $cupon= str_pad($var, $la, $id, STR_PAD_LEFT);
        return $cupon;
    }
   
    /**
     * Algoritmo del Codigo de Barras
     */
     function algoritmo_codigo_referncia($id = 0, $la = 6, $com = 'EVENTUS') {
        $var = strtoupper ($com);
        $cupon= str_pad($id, $la, $var, STR_PAD_LEFT);
        return $cupon;
    }

    /**
     * 
     * Dimencion del la ventana javascript para los gafetes
     * 
     * @param type $h
     * @param type $w
     * @return type
     */
    function ventana_gafete($h= 600, $w= 390) {
        return 'height='.$h.',width='.$w.',scrollbars=yes';
    }
    
}	
// END Resgitro_Utils CLASS

/* End of file Resgitro_Utils.php */

/* Location: ./application/libraries/Resgitro_Utils.php */